package game.core;

import game.mapa.ControladorDoMapa;
import java.awt.Graphics2D;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Controla a parte mais externa do jogo como a vida, os pontos e as fases.
 * Também manipula um objeto que controla o mapa internamente.
 * @author baldacim
 */
public class Game extends NucleoDoGame{

    private ControladorDoMapa controladorMapa;
    private int fase;
    private int quantidadeVidas;
    private int quantidadePontos;

    /**
     * Construtor padrão que inicializa os atributos da classe.
     */
    public Game(){
        this.fase = 0;
        this.quantidadeVidas = 3;
        this.quantidadePontos = 0;
        this.controladorMapa = new ControladorDoMapa();
    }

    /**
     * Manda o controlador do mapa carregar as imagens e a fase atual.
     */
    @Override
    public void init() {

        super.init();
        try {
            // inicia o input manager
            // carrega os recursos
            controladorMapa.carregaImagens();
            controladorMapa.carregaMapa(fase);  //carrega o mapa da primeira fase
        } catch (IOException ex) {
            Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    /**
     * Atualiza as posições dos elementos do jogo.
     * @param elapsedTime
     */
    @Override
    public void update(long elapsedTime) {
        controladorMapa.update( elapsedTime);

    }

    /**
     * Desenha os elementos do jogo.
     * @param g
     */
    @Override
    public void draw(Graphics2D g) {
        controladorMapa.draw(g);

    }


}
